package br.com.hs.nfe.common.enumeration;

/**
 * Enumeração do tipo de tributação do ICMS pelo Simples Nacional.
 * @author Ranlive Hrysyk
 */
public enum CSOSNEnum {

    /**
     * 101 - Tributada com permissão de crédito
     */
    X_101("101", "101 - Tributada com permissão de crédito"),
    /**
     * 102 - Tributada sem permissão de crédito
     */
    X_102("102", "102 - Tributada sem permissão de crédito"),
    /**
     * 103 - Isenção do ICMS para faixa de receita bruta
     */
    X_103("103", "103 - Isenção do ICMS para faixa de receita bruta"),
    /**
     * 201 - Tributada com permissão de crédito e com cobrança do ICMS por ST
     */
    X_201("201", "201 - Tributada com permissão de crédito e com cobrança do ICMS por ST"),
    /**
     * 202 - Tributada sem permissão de crédito e com cobrança do ICMS por ST
     */
    X_202("202", "202 - Tributada sem permissão de crédito e com cobrança do ICMS por ST"),
    /**
     * 203 - Isenção do ICMS para faixa de receita bruta e com cobrança do ICMS por ST
     */
    X_203("203", "203 - Isenção do ICMS para faixa de receita bruta e com cobrança do ICMS por ST"),
    /**
     * 300 - Imune
     */
    X_300("300", "300 - Imune"),
    /**
     * 400 - Não tributada
     */
    X_400("400", "400 - Não tributada"),
    /**
     * 500 - ICMS cobrado anteriormente por ST ou por antecipação
     */
    X_500("500", "500 - ICMS cobrado anteriormente por ST ou por antecipação"),
    /**
     * 900 - Outros
     */
    X_900("900", "900 - Outros");
    private String codigo;
    private String descricao;

    private CSOSNEnum(String codigo, String descricao) {
        this.codigo = codigo;
        this.descricao = descricao;
    }

    /**
     * Descrição.
     */
    public String getDescricao() {
        return this.descricao;
    }

    /**
     * Código.
     */
    public String getCSOSN() {
        return this.codigo;
    }

    @Override
    public String toString() {
        return getDescricao();
    }

    /**
     * Obtém enum pelo código.
     */
    public static CSOSNEnum getEnumByCodigo(String codigo) {
        for (CSOSNEnum e : values()) {
            if (e.getCSOSN().equals(codigo)) {
                return e;
            }
        }
        return null;
    }
}
